home *** CD-ROM | disk | FTP | other *** search
- 68030 timing tables
- -Written by JHL/TRSI
-
- /* recupere sur http://www.dtek.chalmers.se/~d2cg/docs/68030timings.html */
-
-
- # - Add Calculate Effective Address time (CEA)
- % - Add Calculate Immediate Effective Address time (CIEA)
- * - Add Fetch Effective Address time (FEA)
- ! - Add Fetch Immediate Effective Address time (FIEA)
- j - Add Jump Effective Address Time (JEA)
-
-
- (r/p/w) r - Read Cycles
- p - Prefetch Cycles
- w - Write Cycles
-
-
-
- Head Tail I-Cache No-Cache
- move Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
- move Rn,An 2 0 2(0/0/0) 2(0/1/0)
- *move EA,An 0 0 2(0/0/0) 2(0/1/0)
- *move EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- move Rn,(An) 0 1 3(0/0/1) 4(0/1/1)
- *move SOURCE,(An) 2 0 4(0/0/1) 5(0/1/1)
- move Rn,(An)+ 0 1 3(0/0/1) 4(0/1/1)
- *move SOURCE,(An)+ 2 0 4(0/0/1) 5(0/1/1)
- move Rn,-(An) 0 2 4(0/0/1) 4(0/1/1)
- *move SOURCE,-(An) 2 0 4(0/0/1) 5(0/1/1)
- *move EA,(d16,An) 2 0 4(0/0/1) 5(0/1/1)
- *move EA,xxx.W 2 0 4(0/0/1) 5(0/1/1)
- *move EA,xxx.L 0 0 6(0/0/1) 7(0/2/1)
- *move EA,(d8,An,Xn) 4 0 6(0/0/1) 7(0/1/1)
- *move EA,(d16,An) 2 0 8(0/0/1) 9(0/2/1)
- *move EA,(d16,PC) 2 0 8(0/0/1) 9(0/2/1)
- *move EA,(d16,An,Xn) 2 0 8(0/0/1) 9(0/2/1)
- *move EA,(d16,PC,Xn) 2 0 8(0/0/1) 9(0/2/1)
- *move EA,([d16,An],Xn) 2 0 10(1/0/1) 11(1/2/1)
- *move EA,([d16,PC],Xn) 2 0 10(1/0/1) 11(1/2/1)
- *move EA,([d16,An],d16) 2 0 12(1/0/1) 14(1/2/1)
- *move EA,([d16,PC],d16) 2 0 12(1/0/1) 14(1/2/1)
- *move EA,([d16,An],d32) 2 0 14(1/0/1) 16(1/3/1)
- *move EA,([d16,PC],d32) 2 0 14(1/0/1) 16(1/3/1)
- *move EA,([d16,An],Xn,d32) 2 0 14(1/0/1) 16(1/3/1)
- *move EA,([d16,PC],Xn,d32) 2 0 14(1/0/1) 16(1/3/1)
- *move EA,(B) 4 0 8(0/0/1) 9(0/1/1)
- *move EA,(d16,B) 4 0 10(0/0/1) 12(0/2/1)
- *move EA,(d32,B) 4 0 14(0/0/1) 16(0/2/1)
- *move EA,([B]) 4 0 10(1/0/1) 11(1/1/1)
- *move EA,([B].l) 4 0 10(1/0/1) 11(1/1/1)
- *move EA,([B],d16) 4 0 12(1/0/1) 14(1/2/1)
- *move EA,([B].l,d16) 4 0 12(1/0/1) 14(1/2/1)
- *move EA,([B],d32) 4 0 14(1/0/1) 16(1/2/1)
- *move EA,([B].l,d32) 4 0 14(1/0/1) 16(1/2/1)
- *move EA,([d16,B]) 4 0 12(1/0/1) 14(1/2/1)
- *move EA,([d16,B].l) 4 0 12(1/0/1) 14(1/2/1)
- *move EA,([d16,B],d16) 4 0 14(1/0/1) 17(1/2/1)
- *move EA,([d16,B].l,d16) 4 0 14(1/0/1) 17(1/2/1)
- *move EA,([d16,B],d32) 4 0 16(1/0/1) 19(1/3/1)
- *move EA,([d16,B].l,d32) 4 0 16(1/0/1) 19(1/3/1)
- *move EA,([d32,B]) 4 0 16(1/0/1) 18(1/2/1)
- *move EA,([d32,B].l) 4 0 16(1/0/1) 18(1/2/1)
- *move EA,([d32,B],d16) 4 0 18(1/0/1) 21(1/3/1)
- *move EA,([d32,B].l,d16) 4 0 18(1/0/1) 21(1/3/1)
- *move EA,([d32,B],d32) 4 0 18(1/0/1) 23(1/3/1)
- *move EA,([d32,B].l,d32) 4 0 18(1/0/1) 23(1/3/1)
- exg Ry,Rx 4 0 4(0/0/0) 4(0/1/0)
- movec Cr,Rn 6 0 6(0/0/0) 6(0/1/0)
- movec Rn,usp vbr caar msp isp 6 0 6(0/0/0) 6(0/1/0)
- movec Rn,sfc dfc cacr 4 0 12(0/0/0) 12(0/1/0)
- move ccr,Dn 2 0 4(0/0/0) 4(0/1/0)
- #move ccr,mem 2 0 4(0/0/1) 5(0/1/1)
- move Dn,ccr 4 0 4(0/0/1) 4(0/1/1)
- #move EA,ccr 0 0 4(0/0/1) 4(0/1/1)
- move sr,Dn 2 0 4(0/0/1) 4(0/1/1)
- #move sr,mem 2 0 4(0/0/1) 4(0/1/1)
- *move EA,sr 0 0 8(0/0/0) 10(0/1/0)
- %movem EA,rl (+) 2 0 8+4n(n/0/0) 8+4n(n/1/0)
- %movem rl,EA (+) 2 0 4+2n(0/0/n) 4+2n(0/1/n)
- movep.w Dn,(d16,An) 4 0 10(0/0/2) 10(0/1/2)
- movep.w (d16,An),Dn 2 0 10(2/0/0) 10(2/1/0)
- movep.l Dn,(d16,An) 4 0 14(0/0/4) 14(0/1/4)
- movep.l (d16,An),Dn 2 0 14(4/0/0) 14(4/1/0)
- %moves EA,Rn 3 0 7(1/0/0) 7(1/1/0)
- %moves Rn,EA 2 1 5(0/0/1) 6(0/1/1)
- move usp,An 4 0 4(0/0/0) 4(0/1/1)
- move An,usp 4 0 4(0/0/0) 4(0/1/0)
- swap Dn 4 0 4(0/0/0) 4(0/1/0)
- add Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
- adda.w Rn,An 4 0 4(0/0/0) 4(0/1/0)
- adda.l Rn,An 2 0 2(0/0/0) 2(0/1/0)
- *add EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- *adda.w EA,An 0 0 4(0/0/0) 4(0/1/0)
- *adda.l EA,An 0 0 2(0/0/0) 2(0/1/0)
- *add Dn,EA 0 1 3(0/0/1) 4(0/1/1)
- and Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
- *and EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- *and Dn,EA 0 1 3(0/0/1) 4(0/1/1)
- eor Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
- *eor Dn,EA 0 1 3(0/0/1) 4(0/1/1)
- or Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
- or EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- or Dn,EA 0 1 3(0/0/1) 4(0/1/1)
- sub Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
- *sub EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- *sub Dn,EA 0 1 3(0/0/1) 4(0/1/1)
- suba.w Rn,An 4 0 4(0/0/0) 4(0/1/0)
- suba.l Rn,An 2 0 2(0/0/0) 2(0/1/0)
- *suba.w EA,An 0 0 4(0/0/0) 4(0/1/0)
- *suba.l EA,An 0 0 2(0/0/0) 2(0/1/0)
- cmp Rn,Dn 2 0 2(0/0/0) 2(0/1/0)
- *cmp EA,Dn 0 0 2(0/0/0) 2(0/1/0)
- cmpa Rn,An 4 0 4(0/0/0) 4(0/1/0)
- *cmpa EA,An 0 0 4(0/0/0) 4(0/1/0)
- !cmp2 EA,Rn (max) 2 0 20(1/0/0) 20(1/1/0)
- *muls.w EA,Dn (max) 2 0 28(0/0/0) 28(0/1/0)
- !muls.l EA,Dn (max) 2 0 44(0/0/0) 44(0/1/0)
- *mulu.w EA,Dn (max) 2 0 28(0/0/0) 28(0/1/0)
- !mulu.l EA,Dn (max) 2 0 44(0/0/0) 44(0/1/0)
- divs.w Dn,Dn (max) 2 0 56(0/0/0) 56(0/1/0)
- *divs.w EA,Dn (max) 0 0 56(0/0/0) 56(0/1/0)
- !divs.l Dn,Dn (max) 6 0 90(0/0/0) 90(0/1/0)
- !divs.l EA,Dn (max) 0 0 90(0/0/0) 90(0/1/0)
- divu.w Dn,Dn (max) 2 0 44(0/0/0) 44(0/1/0)
- *divu.w EA,Dn (max) 0 0 44(0/0/0) 44(0/1/0)
- !divu.l Dn,Dn (max) 6 0 78(0/0/0) 78(0/1/0)
- !divu.l EA,Dn (max) 0 0 78(0/0/0) 78(0/1/0)
- moveq #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- addq #(data),Rn 2 0 2(0/0/0) 2(0/1/0)
- *addq #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- subq #(data),Rn 2 0 2(0/0/0) 2(0/1/0)
- *subq #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !addi #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !addi #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !andi #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !andi #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !eori #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !eori #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !ori #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !ori #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !subi #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !subi #(data),Mem 0 1 3(0/0/1) 4(0/1/1)
- !cmpi #(data),Dn 2 0 2(0/0/0) 2(0/1/0)
- !cmpi #(data),Mem 0 0 3(0/0/1) 2(0/1/0)
- abcd Dn,Dn 0 0 4(0/0/0) 4(0/1/0)
- abcd -(An),-(An) 2 1 13(2/0/1) 14(2/1/1)
- sbcd Dn,Dn 0 0 4(0/0/0) 4(0/1/0)
- sbcd -(An),-(An) 2 1 13(2/0/1) 14(2/1/1)
- addx Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
- addx -(An),-(An) 2 1 9(2/0/1) 10(2/1/1)
- subx Dn,Dn 2 0 2(0/0/0) 2(0/1/0)
- subx -(An),-(An) 2 1 9(2/0/1) 10(2/1/1)
- cmpm (An)+,(An)+ 0 0 8(2/0/0) 8(2/1/0)
- pack Dn,Dn,#(data) 6 0 6(0/0/0) 6(0/1/0)
- pack -(An),-(An),#(data) 2 1 11(1/0/1) 11(1/1/1)
- unpk Dn,Dn,#(data) 8 0 8(0/0/0) 8(0/1/0)
- unpk -(An),-(An),#(data) 2 1 11(1/0/1) 11(1/1/1)
- clr Dn 2 0 2(0/0/0) 2(0/1/0)
- #clr Mem 0 1 3(0/0/1) 4(0/1/1)
- neg Dn 2 0 2(0/0/0) 2(0/1/0)
- *neg Mem 0 1 3(0/0/1) 4(0/1/1)
- negx Dn 2 0 2(0/0/0) 2(0/1/0)
- *negx Mem 0 1 3(0/0/1) 4(0/1/1)
- not Dn 2 0 2(0/0/0) 2(0/1/0)
- *not Mem 0 1 3(0/0/1) 4(0/1/1)
- ext Dn 4 0 4(0/0/0) 4(0/1/0)
- nbcd Dn 0 0 6(0/0/0) 6(0/1/0)
- scc Dn 4 0 4(0/0/0) 4(0/1/0)
- #scc Mem 0 1 5(0/0/1) 5(0/1/1)
- tas Dn 4 0 4(0/0/0) 4(0/1/0)
- #tas Mem 3 0 12(1/0/1) 12(1/1/1)
- tst Dn 0 0 2(0/0/0) 2(0/1/0)
- *tst Mem 0 0 2(0/0/0) 2(0/1/0)
- ls? #(data),Dy 4 0 4(0/0/0) 4(0/1/0)
- ls? Dx,Dy (shift << size) 6 0 6(0/0/0) 6(0/1/0)
- ls? Dx,Dy (shift >> size) 8 0 8(0/0/0) 8(0/1/0)
- *ls? Mem (by one) 0 0 4(0/0/1) 4(0/1/1)
- asl #(data),Dy 2 0 6(0/0/0) 6(0/1/0)
- asl Dx,Dy 4 0 8(0/0/0) 8(0/1/0)
- asl Mem (by one) 0 0 6(0/0/0) 6(0/1/0)
- asr #(data),Dy 4 0 4(0/0/0) 4(0/1/0)
- asr Dx,Dy (shift << size) 6 0 6(0/0/0) 6(0/1/0)
- asr Dx,Dy (shift >> size) 10 0 10(0/0/0) 10(0/1/0)
- *asr Mem (by one) 0 0 4(0/0/0) 4(0/1/0)
- ro? #(data),Dy 4 0 6(0/0/0) 6(0/1/0)
- ro? Dx,Dy 6 0 8(0/0/0) 8(0/1/0)
- *ro? Mem (by one) 0 0 6(0/0/1) 6(0/1/1)
- rox? Dn 10 0 12(0/0/0) 12(0/1/0)
- *rox? Mem (by one) 0 0 4(0/0/0) 4(0/1/0)
- btst #(data),Dn 4 0 4(0/0/0) 4(0/1/0)
- btst Dn,Dn 4 0 4(0/0/0) 4(0/1/0)
- !btst #(data),Mem 0 0 4(0/0/0) 4(0/1/0)
- *btst Dn,Mem 0 0 4(0/0/0) 4(0/1/0)
- bchg #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
- bchg Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
- !bchg #(data),Mem 0 0 6(0/0/1) 6(0/1/1)
- *bchg Dn,Mem 0 0 6(0/0/1) 6(0/1/1)
- bclr #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
- bclr Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
- !bclr #(data),Mem 0 0 6(0/0/1) 6(0/1/1)
- *bclr Dn,Mem 0 0 6(0/0/1) 6(0/1/1)
- bset #(data),Dn 6 0 6(0/0/0) 6(0/1/0)
- bset Dn,Dn 6 0 6(0/0/0) 6(0/1/0)
- !bset #(data),Mem 0 0 6(0/0/1) 6(0/1/1)
- %bset Dn,Mem 0 0 6(0/0/1) 6(0/1/1)
- bftst Dn 8 0 8(0/0/0) 8(0/1/0)
- %bftst Mem (< 5 bytes) 6 0 10(1/0/0) 10(1/1/0)
- %bftst Mem (> 5 bytes) 6 0 14(2/0/0) 14(2/1/0)
- bfchg Dn 14 0 14(0/0/0) 14(0/1/0)
- %bfchg Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1)
- %bfchg Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2)
- bfclr Dn 14 0 14(0/0/0) 14(0/1/0)
- %bfclr Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1)
- %bfclr Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2)
- bfset Dn 14 0 14(0/0/0) 14(0/1/0)
- %bfset Mem (< 5 bytes) 6 0 14(1/0/1) 14(1/1/1)
- %bfset Mem (> 5 bytes) 6 0 22(2/0/2) 22(2/1/2)
- bfexts Dn 10 0 10(0/0/0) 10(0/1/0)
- %bfexts Mem (< 5 bytes) 6 0 12(1/0/0) 12(1/1/0)
- %bfexts Mem (> 5 bytes) 6 0 18(2/0/0) 18(2/1/0)
- bfextu Dn 10 0 10(0/0/0) 10(0/1/0)
- %bfextu Mem (< 5 bytes) 6 0 12(1/0/0) 12(1/1/0)
- %bfextu Mem (> 5 bytes) 6 0 18(2/0/0) 18(2/1/0)
- bfins Dn 12 0 12(0/0/0) 12(0/1/0)
- %bfins Mem (< 5 bytes) 6 0 12(1/0/1) 12(1/1/1)
- %bfins Mem (> 5 bytes) 6 0 18(2/0/2) 18(2/1/2)
- bfffo Dn 20 0 20(0/0/0) 20(0/1/0)
- %bfffo Mem (< 5 bytes) 6 0 22(1/0/0) 22(1/1/0)
- %bfffo Mem (> 5 bytes) 6 0 28(2/0/0) 28(2/1/0)
- bcc (taken) 6 0 6(0/0/0) 8(0/2/0)
- bcc.b (not taken) 4 0 4(0/0/0) 4(0/1/0)
- bcc.w (not taken) 6 0 6(0/0/0) 6(0/1/0)
- bcc.l (not taken) 6 0 6(0/0/0) 8(0/2/0)
- dbcc (false,cnt not expired) 6 0 6(0/0/0) 8(0/2/0)
- dbcc (false,but cnt expired) 10 0 10(0/0/0) 13(0/3/0)
- dbcc (true) 6 0 6(0/0/0) 8(0/1/0)
- andi to sr 4 0 12(0/0/0) 14(0/2/0)
- eori to sr 4 0 12(0/0/0) 14(0/2/0)
- ori to sr 4 0 12(0/0/0) 14(0/2/0)
- andi to ccr 4 0 12(0/0/0) 14(0/2/0)
- eori to ccr 4 0 12(0/0/0) 14(0/2/0)
- ori to ccr 4 0 12(0/0/0) 14(0/2/0)
- bsr 2 0 6(0/0/1) 9(0/2/1)
- %cas (succesful compare) 1 0 13(1/0/1) 13(1/1/1)
- %cas (unsuccesful compare) 1 0 11(1/0/0) 11(1/1/0)
- cas2 (succesful compare) (max) 2 0 24(2/0/2) 26(2/2/2)
- cas2 (unsuccesful compare)(max)2 0 24(2/0/0) 24(2/2/0)
- chk Dn,Dn (no Exception) 8 0 8(0/0/0) 8(0/1/0)
- chk Dn,Dn (Exception taken) 4 0 28(1/0/4) 30(1/3/4)
- chk EA,Dn (no Exception) 0 0 8(0/0/0) 8(0/1/0)
- chk EA,Dn (Exception taken)max 0 0 28(1/0/4) 30(1/3/4)
- !chk2 Mem,Rn (no Exception)max 2 0 18(1/0/0) 18(1/1/0)
- !chk2 Mem,Rn (Exception taken)mx2 0 40(2/0/4) 42(2/3/4)
- jjmp 4 0 4(0/0/0) 6(0/2/0)
- jjsr 0 0 4(0/0/1) 7(0/2/1)
- #lea 2 0 2(0/0/0) 2(0/1/0)
- link.w 0 0 4(0/0/1) 5(0/1/1)
- link.l 2 0 6(0/0/1) 7(0/2/1)
- nop 0 0 2(0/0/0) 2(0/1/0)
- #pea 0 2 4(0/0/1) 4(0/1/1)
- rtd 2 0 10(1/0/0) 12(1/2/0)
- rtr 1 0 12(2/0/0) 14(2/2/0)
- rts 1 0 9(1/0/0) 11(1/2/0)
- unlk 0 0 5(1/0/0) 5(1/1/0)
- bkpt 1 0 9(1/0/0) 9(1/0/0)
- Interrupt (I-Stack) 0 0 23(2/0/4) 24(2/2/4)
- Interrupt (M-Stack) 0 0 33(2/0/8) 34(2/2/8)
- reset 0 0 518(0/0/0) 518(0/1/0)
- stop 0 0 8(0/0/0) 8(0/2/0)
- trace 0 0 22(1/0/5) 24(1/2/5)
- trap #n 0 0 18(1/0/5) 20(1/2/4)
- Illegal Instruction 0 0 18(1/0/5) 20(1/2/4)
- A-Line trap 0 0 18(1/0/5) 20(1/2/4)
- F-Line trap 0 0 18(1/0/5) 20(1/2/4)
- Priviledge Violation 0 0 18(1/0/5) 20(1/2/4)
- trapcc (Trap) 2 0 22(1/0/5) 24(1/2/5)
- trapcc (No trap) 4 0 4(0/0/0) 4(0/1/0)
- trapcc.w (Trap) 5 0 24(1/0/5) 26(1/3/5)
- trapcc.w (No trap) 6 0 6(0/0/0) 6(0/1/0)
- trapcc.l (Trap) 6 0 26(1/0/5) 28(1/3/5)
- trapcc.l (No trap) 8 0 8(0/0/0) 8(0/2/0)
- trapv (Trap) 2 0 22(1/0/5) 24(1/2/5)
- trapv (No trap) 4 0 4(0/0/0) 4(0/1/0)
-
- Bus Cycle Fault (Short) 0 0 36(1/0/10) 38(1/2/10)
- Bus Cycle Fault (Long) 0 0 62(1/0/24) 64(1/2/24)
- RTE (Normal Four Word) 1 0 18(4/0/0) 20(4/2/0)
- RTE (Six Word) 1 0 18(4/0/0) 20(4/2/0)
- RTE (Throwaway) 1 0 12(4/0/0) 12(4/0/0)
- RTE (Coprocessor) 1 0 26(7/0/0) 26(7/2/0)
- RTE (Short Fault) 1 0 36(10/0/0) 26(10/2/0)
- RTE (Long Fault) 1 0 76(25/0/0) 76(25/2/0)
-
-
- Fetch Effective Address (FEA)
-
- Dn - - 0(0/0/0) 0(0/0/0)
- An - - 0(0/0/0) 0(0/0/0)
- (An) 1 1 3(1/0/0) 3(1/0/0)
- (An)+ 0 1 3(1/0/0) 3(1/0/0)
- -(An) 2 2 4(1/0/0) 4(1/0/0)
- (d16,An) 2 2 4(1/0/0) 4(1/1/0)
- (d16,PC) 2 2 4(1/0/0) 4(1/1/0)
- (xxx).w 2 2 4(1/0/0) 4(1/1/0)
- (xxx).l 1 0 4(1/0/0) 5(1/1/0)
- #(data).b 2 0 2(0/0/0) 2(0/1/0)
- #(data).w 2 0 2(0/0/0) 2(0/1/0)
- #(data).l 4 0 4(0/0/0) 4(0/1/0)
- (d16,An) 2 0 6(1/0/0) 7(1/1/0)
- (d16,PC) 2 0 6(1/0/0) 7(1/1/0)
- (d16,An,Xn) 4 0 6(1/0/0) 7(1/1/0)
- (d16,PC,Xn) 4 0 6(1/0/0) 7(1/1/0)
- ([d16,An]) 2 0 10(2/0/0) 10(2/1/0)
- ([d16,PC]) 2 0 10(2/0/0) 10(2/1/0)
- ([d16,An],Xn) 2 0 10(2/0/0) 10(2/1/0)
- ([d16,PC],Xn) 2 0 10(2/0/0) 10(2/1/0)
- ([d16,An],d16) 2 0 12(2/0/0) 13(2/2/0)
- ([d16,PC],d16) 2 0 12(2/0/0) 13(2/2/0)
- ([d16,An],Xn,d16) 2 0 12(2/0/0) 13(2/2/0)
- ([d16,PC],Xn,d16) 2 0 12(2/0/0) 13(2/2/0)
- ([d16,An],d32) 2 0 12(2/0/0) 14(2/2/0)
- ([d16,PC],d32) 2 0 12(2/0/0) 14(2/2/0)
- ([d16,An],Xn,d32) 2 0 12(2/0/0) 14(2/2/0)
- ([d16,PC],Xn,d32) 2 0 12(2/0/0) 14(2/2/0)
- (B) 4 0 6(1/0/0) 7(1/1/0)
- (d16,B) 4 0 8(1/0/0) 10(1/1/0)
- (d32,B) 4 0 12(1/0/0) 13(1/2/0)
- ([B]) 4 0 10(2/0/0) 10(2/1/0)
- ([B].l) 4 0 10(2/0/0) 10(2/1/0)
- ([B],d16) 4 0 12(2/0/0) 13(2/1/0)
- ([B].l,d16) 4 0 12(2/0/0) 13(2/1/0)
- ([B],d32) 4 0 12(2/0/0) 14(2/2/0)
- ([B].l,d32) 4 0 12(2/0/0) 14(2/2/0)
- ([d16,B]) 4 0 12(2/0/0) 13(2/1/0)
- ([d16,B].l) 4 0 12(2/0/0) 13(2/1/0)
- ([d16,B],d16) 4 0 14(2/0/0) 16(2/2/0)
- ([d16,B].l,d16) 4 0 14(2/0/0) 16(2/2/0)
- ([d16,B],d32) 4 0 14(2/0/0) 17(2/2/0)
- ([d16,B].l,d32) 4 0 14(2/0/0) 17(2/2/0)
- ([d32,B]) 4 0 16(2/0/0) 17(2/2/0)
- ([d32,B].l) 4 0 16(2/0/0) 17(2/2/0)
- ([d32,B],d16) 4 0 18(2/0/0) 20(2/2/0)
- ([d32,B].l,d16) 4 0 18(2/0/0) 20(2/2/0)
- ([d32,B],d32) 4 0 18(2/0/0) 21(2/3/0)
- ([d32,B].l,d32) 4 0 18(2/0/0) 21(2/3/0)
-
- Fetch Immediate Effective Address (FIEA)
-
- #(data).w,Dn 2+op 0 2(0/0/0) 2(0/1/0)
- #(data).l,Dn 4+op 0 4(0/0/0) 4(0/1/0)
- #(data).w,(An) 1 1 3(1/0/0) 4(1/1/0)
- #(data).l,(An) 1 0 4(1/0/0) 5(1/1/0)
- #(data).w,(An)+ 2 1 5(1/0/0) 5(1/1/0)
- #(data).l,(An)+ 4 1 7(1/0/0) 7(1/1/0)
- #(data).w,-(An) 2 2 4(1/0/0) 4(1/1/0)
- #(data).l,-(An) 2 0 4(1/0/0) 5(1/1/0)
- #(data).w,(d16,An) 2 0 4(1/0/0) 5(1/1/0)
- #(data).l,(d16,An) 4 0 6(1/0/0) 8(1/2/0)
- #(data).w,(xxx).w 4 2 6(1/0/0) 6(1/1/0)
- #(data).l,(xxx).w 6 2 8(1/0/0) 8(1/2/0)
- #(data).w,(xxx).l 3 0 6(1/0/0) 7(1/2/0)
- #(data).l,(xxx).l 5 0 8(1/0/0) 9(1/2/0)
- #(data).w,#(data).l 6+op 0 6(0/0/0) 6(0/2/0)
- #(data).w,(d8,An,Xn) 6 2 8(1/0/0) 8(1/2/0)
- #(data).w,(d8,PC,Xn) 6 2 8(1/0/0) 8(1/2/0)
- #(data).l,(d8,An,Xn) 8 2 10(1/0/0) 10(1/2/0)
- #(data).l,(d8,PC,Xn) 8 2 10(1/0/0) 10(1/2/0)
- #(data).w,(d16,An) 4 0 8(1/0/0) 9(1/2/0)
- #(data).w,(d16,PC) 4 0 8(1/0/0) 9(1/2/0)
- #(data).l,(d16,An) 6 0 10(1/0/0) 11(1/2/0)
- #(data).l,(d16,PC) 6 0 10(1/0/0) 11(1/2/0)
- #(data).w,(d16,An,Xn) 6 0 8(1/0/0) 9(1/2/0)
- #(data).w,(d16,PC,Xn) 6 0 8(1/0/0) 9(1/2/0)
- #(data).l,(d16,An,Xn) 8 0 10(1/0/0) 11(1/2/0)
- #(data).l,(d16,PC,Xn) 8 0 10(1/0/0) 11(1/2/0)
- #(data).w,([d16,An]) 4 0 12(2/0/0) 14(2/2/0)
- #(data).w,([d16,PC]) 4 0 12(2/0/0) 14(2/2/0)
- #(data).l,([d16,An]) 6 0 14(2/0/0) 14(2/2/0)
- #(data).l,([d16,PC]) 6 0 14(2/0/0) 14(2/2/0)
- #(data).w,([d16,An],Xn) 4 0 12(2/0/0) 12(2/2/0)
- #(data).w,([d16,PC],Xn) 4 0 12(2/0/0) 12(2/2/0)
- #(data).l,([d16,An],Xn) 6 0 14(2/0/0) 14(2/2/0)
- #(data).l,([d16,PC],Xn) 6 0 14(2/0/0) 14(2/2/0)
- #(data).w,([d16,An],d16) 4 0 14(2/0/0) 15(2/2/0)
- #(data).w,([d16,PC],d16) 4 0 14(2/0/0) 15(2/2/0)
- #(data).l,([d16,An],d16) 6 0 16(2/0/0) 17(2/3/0)
- #(data).l,([d16,PC],d16) 6 0 16(2/0/0) 17(2/3/0)
- #(data).w,([d16,An],Xn,d16) 4 0 14(2/0/0) 15(2/2/0)
- #(data).w,([d16,PC],Xn,d16) 4 0 14(2/0/0) 15(2/2/0)
- #(data).l,([d16,An],Xn,d16) 6 0 16(2/0/0) 17(2/3/0)
- #(data).l,([d16,PC],Xn,d16) 6 0 16(2/0/0) 17(2/3/0)
- #(data).w,([d16,An],d32) 4 0 14(2/0/0) 16(2/3/0)
- #(data).w,([d16,PC],d32) 4 0 14(2/0/0) 16(2/3/0)
- #(data).l,([d16,An],d32) 6 0 16(2/0/0) 18(2/3/0)
- #(data).l,([d16,PC],d32) 6 0 16(2/0/0) 18(2/3/0)
- #(data).w,([d16,An],Xn,d32) 4 0 14(2/0/0) 16(2/3/0)
- #(data).w,([d16,PC],Xn,d32) 4 0 14(2/0/0) 16(2/3/0)
- #(data).l,([d16,An],Xn,d32) 6 0 16(2/0/0) 18(2/3/0)
- #(data).l,([d16,PC],Xn,d32) 6 0 16(2/0/0) 18(2/3/0)
- #(data).w,(B) 6 0 8(1/0/0) 9(1/1/0)
- #(data).l,(B) 8 0 10(1/0/0) 11(1/2/0)
- #(data).w,(d16,B) 6 0 10(1/0/0) 12(1/2/0)
- #(data).l,(d16,B) 8 0 12(1/0/0) 14(1/2/0)
- #(data).w,(d32,B) 10 0 14(1/0/0) 16(1/2/0)
- #(data).l,(d32,B) 12 0 16(1/0/0) 18(1/3/0)
- #(data).w,([B]) 6 0 12(2/0/0) 12(2/1/0)
- #(data).l,([B]) 8 0 14(2/0/0) 14(2/2/0)
- #(data).w,([B].l) 6 0 12(2/0/0) 12(2/1/0)
- #(data).l,([B].l) 8 0 14(2/0/0) 14(2/2/0)
- #(data).w,([B],d16) 6 0 14(2/0/0) 15(2/2/0)
- #(data).l,([B],d16) 8 0 16(2/0/0) 17(2/2/0)
- #(data).w,([B].l,d16) 6 0 14(2/0/0) 15(2/2/0)
- #(data).l,([B].l,d16) 8 0 16(2/0/0) 17(2/2/0)
- #(data).w,([B],d32) 6 0 14(2/0/0) 16(2/2/0)
- #(data).l,([B],d32) 8 0 16(2/0/0) 18(2/3/0)
- #(data).w,([B].l,d32) 6 0 14(2/0/0) 16(2/2/0)
- #(data).l,([B].l,d32) 8 0 16(2/0/0) 18(2/3/0)
- #(data).w,([d16,B]) 6 0 14(2/0/0) 15(2/2/0)
- #(data).l,([d16,B]) 8 0 16(2/0/0) 17(2/2/0)
- #(data).w,([d16,B].l) 6 0 14(2/0/0) 15(2/2/0)
- #(data).l,([d16,B].l) 8 0 16(2/0/0) 17(2/2/0)
- #(data).w,([d16,B],d16) 6 0 16(2/0/0) 18(2/2/0)
- #(data).l,([d16,B],d16) 8 0 18(2/0/0) 20(2/3/0)
- #(data).w,([d16,B].l,d16) 6 0 16(2/0/0) 18(2/2/0)
- #(data).l,([d16,B].l,d16) 8 0 18(2/0/0) 20(2/3/0)
- #(data).w,([d16,B],d32) 6 0 16(2/0/0) 19(2/3/0)
- #(data).l,([d16,B],d32) 8 0 18(2/0/0) 21(2/3/0)
- #(data).w,([d16,B].l,d32) 6 0 16(2/0/0) 19(2/3/0)
- #(data).l,([d16,B].l,d32) 8 0 18(2/0/0) 21(2/3/0)
- #(data).w,([d32,B]) 6 0 18(2/0/0) 19(2/2/0)
- #(data).l,([d32,B]) 8 0 20(2/0/0) 21(2/3/0)
- #(data).w,([d32,B].l) 6 0 18(2/0/0) 19(2/2/0)
- #(data).l,([d32,B].l) 8 0 20(2/0/0) 21(2/3/0)
- #(data).w,([d32,B],d16) 6 0 20(2/0/0) 22(2/3/0)
- #(data).l,([d32,B],d16) 8 0 22(2/0/0) 24(2/3/0)
- #(data).w,([d32,B].l,d16) 6 0 20(2/0/0) 22(2/3/0)
- #(data).l,([d32,B].l,d16) 8 0 22(2/0/0) 24(2/3/0)
- #(data).w,([d32,B],d32) 6 0 20(2/0/0) 23(2/3/0)
- #(data).l,([d32,B],d32) 8 0 22(2/0/0) 25(2/4/0)
- #(data).w,([d32,B].l,d32) 6 0 20(2/0/0) 23(2/3/0)
- #(data).l,([d32,B].l,d32) 8 0 22(2/0/0) 25(2/4/0)
-
- Calculate Effective Address (CEA)
-
- Dn - - 0(0/0/0) 0(0/0/0)
- An - - 0(0/0/0) 0(0/0/0)
- (An) 2+op 0 2(0/0/0) 2(0/0/0)
- (An)+ 0 0 2(0/0/0) 2(0/0/0)
- -(An) 2+op 0 2(0/0/0) 2(0/0/0)
- (d16,An) 2+op 0 2(0/0/0) 2(0/0/0)
- (d16,PC) 2+op 0 2(0/0/0) 2(0/1/0)
- (xxx).w 2+op 0 2(0/0/0) 2(0/1/0)
- (xxx).l 4+op 0 4(0/0/0) 4(0/1/0)
- (d8,An,Xn) 4+op 0 4(0/0/0) 4(0/1/0)
- (d8,PC,Xn) 4+op 0 4(0/0/0) 4(0/1/0)
- (d16,An) 2 0 6(0/0/0) 6(0/1/0)
- (d16,PC) 2 0 6(0/0/0) 6(0/1/0)
- (d16,An,Xn) 6+op 0 6(0/0/0) 6(0/1/0)
- (d16,PC,Xn) 6+op 0 6(0/0/0) 6(0/1/0)
- ([d16,An]) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,PC]) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,An],Xn) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,PC],Xn) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,An],d16) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,PC],d16) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,An],Xn,d16) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,PC],Xn,d16) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,An],d32) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,PC],d32) 2 0 12(1/0/0) 13(1/2/0)
- ([d16,An],Xn,d32) 2 0 12(1/0/0) 11(1/2/0)
- ([d16,PC],Xn,d32) 2 0 12(1/0/0) 13(1/2/0)
- (B) 6+op 0 6(0/0/0) 6(0/1/0)
- (d16,B) 4 0 8(0/0/0) 9(0/1/0)
- (d32,B) 4 0 12(0/0/0) 12(0/2/0)
- ([B]) 4 0 10(1/0/0) 10(1/1/0)
- ([B].l) 4 0 10(1/0/0) 10(1/1/0)
- ([B],d16) 4 0 12(1/0/0) 13(1/1/0)
- ([B].l,d16) 4 0 12(1/0/0) 13(1/1/0)
- ([B],d32) 4 0 12(1/0/0) 13(1/2/0)
- ([B].l,d32) 4 0 12(2/0/0) 13(1/2/0)
- ([d16,B]) 4 0 12(1/0/0) 13(1/1/0)
- ([d16,B].l) 4 0 12(1/0/0) 13(1/1/0)
- ([d16,B],d16) 4 0 14(1/0/0) 16(1/2/0)
- ([d16,B].l,d16) 4 0 14(1/0/0) 16(1/2/0)
- ([d16,B],d32) 4 0 14(1/0/0) 16(1/2/0)
- ([d16,B].l,d32) 4 0 14(1/0/0) 16(1/2/0)
- ([d32,B]) 4 0 16(1/0/0) 17(1/2/0)
- ([d32,B].l) 4 0 16(1/0/0) 17(1/2/0)
- ([d32,B],d16) 4 0 18(1/0/0) 20(1/2/0)
- ([d32,B].l,d16) 4 0 18(1/0/0) 20(1/2/0)
- ([d32,B],d32) 4 0 18(1/0/0) 20(1/3/0)
- ([d32,B].l,d32) 4 0 18(1/0/0) 20(1/3/0)
-
-
- Calculate Immediate Effective Address (CIEA) for WORDS
- (for LONGS add 2 for head and cycle count)
-
- Dn 2+op 0 2(0/0/0) 0(0/0/0)
- (An) 2 0 2(0/0/0) 2(0/0/0)
- (An)+ 2+op 0 4(0/0/0) 2(0/0/0)
- -(An) 2+op 0 2(0/0/0) 2(0/0/0)
- (d16,An) 4+op 0 4(0/0/0) 2(0/0/0)
- (d16,PC) 4+op 0 4(0/0/0) 2(0/1/0)
- (xxx).w 4+op 0 4(0/0/0) 2(0/1/0)
- (xxx).l 6+op 0 6(0/0/0) 4(0/1/0)
- (d8,An,Xn) 6+op 0 6(0/0/0) 4(0/1/0)
- (d8,PC,Xn) 6+op 0 6(0/0/0) 4(0/1/0)
- (d16,An) 4 0 8(0/0/0) 6(0/1/0)
- (d16,PC) 4 0 8(0/0/0) 6(0/1/0)
- (d16,An,Xn) 4+op 0 8(0/0/0) 6(0/1/0)
- (d16,PC,Xn) 4+op 0 8(0/0/0) 6(0/1/0)
- ([d16,An]) 4 0 12(1/0/0) 6(1/1/0)
- ([d16,PC]) 4 0 12(1/0/0) 6(1/1/0)
- ([d16,An],Xn) 8+op 0 10(2/0/0) 10(2/1/0)
- ([d16,PC],Xn) 8+op 0 10(2/0/0) 10(2/1/0)
- ([d16,An],d16) 4 0 12(2/0/0) 13(2/2/0)
- ([d16,PC],d16) 4 0 12(2/0/0) 13(2/2/0)
- ([d16,An],Xn,d16) 4 0 12(2/0/0) 13(2/2/0)
- ([d16,PC],Xn,d16) 4 0 12(2/0/0) 13(2/2/0)
- ([d16,An],d32) 4 0 12(2/0/0) 14(2/2/0)
- ([d16,PC],d32) 4 0 12(2/0/0) 14(2/2/0)
- ([d16,An],Xn,d32) 4 0 12(2/0/0) 14(2/2/0)
- ([d16,PC],Xn,d32) 4 0 12(2/0/0) 14(2/2/0)
- (B) 8+op 0 6(1/0/0) 7(1/1/0)
- (d16,B) 6 0 8(1/0/0) 10(1/1/0)
- (d32,B) 6 0 12(1/0/0) 13(1/2/0)
- ([B]) 6 0 12(1/0/0) 12(1/1/0)
- ([B].l) 6 0 12(1/0/0) 12(1/1/0)
- ([B],d16) 6 0 14(1/0/0) 15(1/2/0)
- ([B].l,d16) 6 0 14(1/0/0) 15(1/2/0)
- ([B],d32) 6 0 14(1/0/0) 15(1/2/0)
- ([B].l,d32) 6 0 14(1/0/0) 15(1/2/0)
- ([d16,B]) 6 0 14(1/0/0) 15(1/2/0)
- ([d16,B].l) 6 0 14(1/0/0) 15(1/2/0)
- ([d16,B],d16) 6 0 16(1/0/0) 18(1/2/0)
- ([d16,B].l,d16) 6 0 16(1/0/0) 18(1/2/0)
- ([d16,B],d32) 6 0 16(1/0/0) 18(1/2/0)
- ([d16,B].l,d32) 6 0 16(1/0/0) 18(1/2/0)
- ([d32,B]) 6 0 18(1/0/0) 19(1/2/0)
- ([d32,B].l) 6 0 18(2/0/0) 19(2/2/0)
- ([d32,B],d16) 6 0 20(1/0/0) 22(1/3/0)
- ([d32,B].l,d16) 6 0 20(1/0/0) 22(1/3/0)
- ([d32,B],d32) 6 0 22(1/0/0) 24(1/3/0)
- ([d32,B].l,d32) 6 0 22(1/0/0) 24(1/3/0)
-
- Jump Effective Address (JEA)
-
- (An) 2+op 0 2(0/0/0) 2(0/0/0)
- (d16,An) 4+op 0 4(0/0/0) 4(0/0/0)
- $00.w 2+op 0 2(0/0/0) 2(0/0/0)
- $00.l 2+op 0 2(0/0/0) 2(0/0/0)
- (d8,An,Xn) 6+op 0 6(0/0/0) 6(0/0/0)
- (d8,An,PC) 6+op 0 6(0/0/0) 6(0/0/0)
- (d16,An) 2 0 6(0/0/0) 6(0/0/0)
- (d16,PC) 2 0 6(0/0/0) 6(0/0/0)
- (d16,An,Xn) 6+op 0 6(0/0/0) 6(0/0/0)
- (d16,PC,Xn) 6+op 0 6(0/0/0) 6(0/0/0)
- ([d16,An]) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,PC]) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,An],Xn) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,PC],Xn) 2 0 10(1/0/0) 10(1/1/0)
- ([d16,An],d16) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,PC],d16) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,An],Xn,d16) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,PC],Xn,d16) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,An],d32) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,PC],d32) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,An],Xn,d32) 2 0 12(1/0/0) 12(1/2/0)
- ([d16,PC],Xn,d32) 2 0 12(1/0/0) 12(1/2/0)
- (B) 6+op 0 6(0/0/0) 6(0/0/0)
- (d16,B) 4 0 8(0/0/0) 9(0/1/0)
- (d32,B) 4 0 12(0/0/0) 13(0/1/0)
- ([B]) 4 0 10(1/0/0) 10(1/1/0)
- ([B].l) 4 0 10(1/0/0) 10(1/1/0)
- ([B],d16) 4 0 12(1/0/0) 12(1/1/0)
- ([B].l,d16) 4 0 12(1/0/0) 12(1/1/0)
- ([B],d32) 4 0 12(1/0/0) 12(1/1/0)
- ([B].l,d32) 4 0 12(1/0/0) 12(1/1/0)
- ([d16,B]) 4 0 12(1/0/0) 13(1/1/0)
- ([d16,B].l) 4 0 12(1/0/0) 13(1/1/0)
- ([d16,B],d16) 4 0 14(1/0/0) 15(1/1/0)
- ([d16,B].l,d16) 4 0 14(1/0/0) 15(1/1/0)
- ([d16,B],d32) 4 0 14(1/0/0) 15(1/1/0)
- ([d16,B].l,d32) 4 0 14(1/0/0) 15(1/1/0)
- ([d32,B]) 4 0 16(1/0/0) 17(1/2/0)
- ([d32,B].l) 4 0 16(1/0/0) 17(1/2/0)
- ([d32,B],d16) 4 0 18(1/0/0) 19(1/2/0)
- ([d32,B].l,d16) 4 0 18(1/0/0) 19(1/2/0)
- ([d32,B],d32) 4 0 18(1/0/0) 19(1/2/0)
- ([d32,B].l,d32) 4 0 18(1/0/0) 19(1/2/0)
-
-
- Some notes about 020+ made by JHL:
-
- ;-------------------------
-
- Most of 020 cycletimes are same than on 030; havent found any differenties.
-
- ;-------------------------
- ...
- clr.l -(a0)
- clr.l -(a0)
- ...
- is 25% faster than
- ...
- clr.l (a0)+
- clr.l (a0)+
- ...
- ;-------------------------
- move.l (a0,d0.l) is faster than
- move.l (a0,d0.w)
- same with adda.w <-> adda.l etc.
- ;-------------------------
- move.b d0,-(a7) will decrease a7 with 2!
- ;-------------------------
-
- Never use those silly #xx,([a0]) new modes, they are slower than
- move.l (a0),a0
- move.l #xx,(a0)
- ...case you have no extra spare registers, but... that's rare.
-
- ;-------------------------
-
- Time-optimizing on A1200 is more sparing BUS than CPU; the CHIP RAM
- is just too slow.. Remeber to adjust your WRITES to CHIP; Adjusting
- memory READS wont do you no good. (Naturally, how could computer keep
- going on without knowing have we read something we're using?)
-
- ;--------------------
-
- Interrupts are deadly slow, try to figure out something better.. like
- Copper ;-) Just plain movem*2, Trap and RTE will take HUGE amount of
- cycles.
-
- movem.l all,-(sp)
- movem.l (sp)+,all
- rte
-
- will take about 80 Cycles... okey, why use all regs ;-)
-
- Comments, Bugreports, Optimizing bullshit to...
-
- JHL/Zenlandia
-